package cn.sccdlg.lambda.demo04.mapper;

import cn.sccdlg.lambda.demo04.pojo.Dept;
import cn.sccdlg.lambda.demo04.util.DeptStrategy;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author RaoShuang
 * @emil 991207823@qq.com
 * @date 2020/6/7 22:15
 * 部门映射mapper
 */
@Mapper
public interface DeptMapper {

    /**
     * 根据编号查询部门
     * @param id 部门编号
     * @return 查询到的部门数据
     */
    @Select("select deptno,deptname,location from department as dept where deptNo = #{id}")
    Dept findById(String id);

    /**
     * 查询所有部门
     * @return 返回系统中所有部门数据
     */
    @Select("select deptno,deptname,location from department as dept")
    List<Dept> findAll();

    /**
     * 根据指定策略查询部门数据
     * @param strategy 策略条件
     * @return 返回查询到的部门数据
     */
    List<Dept> findByStrategy(DeptStrategy strategy);

    /**
     * 增加一个新部门
     * @param dept 要增加的部门数据
     * @return 影响的记录数
     */
    Integer add(Dept dept);

    /**
     * 修改部门数据
     * @param newDept 新的部门数据
     * @return 影响的记录数
     */
    Integer update(Dept newDept);

    /**
     * 删除部门数据
     * @param id 部门编号
     * @return 影响的记录数
     */
    Integer delete(String id);
}
